package com.wei.web.middleware.retry.sequence;

/**
 * 并发安全的顺序任务队列处理器
 */
public interface SequenceQueueProcessor<T> {
    /**
     * 将数据放入顺序队列末尾
     *
     * @param data 数据
     */
    void put(T data);

    /**
     * 保证线程安全，尝试处理线性队列
     */
    void tryAutomaticProcess(String topicKey, String msgTopic);

    /**
     * 处理结果后，并发安全处理后续任务
     */
    void processResultCallback(String topicKey, String clientId, String requestId);

    /**
     * 定时检查，重试
     */
    void onTimerScan();

}
